{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#导入数据集合\n",
    "import numpy as np\n",
    "\n",
    "def load_data(filename,splitstyle = \"\\t\"):\n",
    "    dataset = []\n",
    "    file = open(filename)\n",
    "    for line in file.readlines():\n",
    "        lineArr = line.strip().split(splitstyle)\n",
    "        m = len(lineArr)\n",
    "        dataset.append(lineArr[0:m])\n",
    "    return np.array(dataset,dtype=np.float64)\n",
    "    \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1000L, 2L)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7c44198>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = load_data(\"pca/testSet.txt\")\n",
    "print x.shape\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "#可视化一下数据集合\n",
    "plt.scatter(x[:,0],x[:,1],marker='x',color = 'r')\n",
    "plt.xlabel('x0')\n",
    "plt.ylabel('x1')\n",
    "plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def pca(x,k):\n",
    "    x_mean = np.mean(x,axis=0)\n",
    "    x_nor = x - x_mean\n",
    "    x_cov = np.cov(x_nor,rowvar=0) #协方差矩阵 [n,n]\n",
    "    \n",
    "    eigvals,eigVecs = np.linalg.eig(x_cov) #计算协方差矩阵的特征值和特征向量\n",
    "\n",
    "    eigvals_sortindex = np.argsort(eigvals) #对特征值进行排序 \n",
    "    k_index = eigvals_sortindex[: -(k+1):-1] #取出 最后的k个（因为是从小到大排序的）所以倒过来数\n",
    "    k_eigVecs = eigVecs[:,k_index] #只要最大的k个特征向量 [n,k]\n",
    "    \n",
    "    lowData = x_nor.dot(k_eigVecs) #降维的数据(m.k) =[m,n]*[n,k]\n",
    "    recData = lowData.dot(k_eigVecs.T) + x_mean #恢复的数据(m,n) 加上x_mean,是为了还原到原来的范围\n",
    "    \n",
    "    return lowData,recData\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1000L, 1L)\n(1000L, 2L)\n"
     ]
    }
   ],
   "source": [
    "lowData , recData = pca(x,k=1)\n",
    "print lowData.shape\n",
    "print recData.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7bb3208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#可视化一下原始数据集合 以及 第一成分表示的集合\n",
    "plt.scatter(x[:,0],x[:,1],marker='x',color = 'r')\n",
    "plt.scatter(recData[:,0],recData[:,1],marker=\"o\",color=\"black\")\n",
    "plt.xlabel('x0')\n",
    "plt.ylabel('x1')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1567L, 590L)\n"
     ]
    }
   ],
   "source": [
    "#现在导入secom.data数据集合，将其中的NaN数值替代为均值\n",
    "def replaceNanWithMean():\n",
    "    data = load_data(\"pca/secom.data\",splitstyle=\" \")\n",
    "    n = data.shape[1]\n",
    "    for j in xrange(n):\n",
    "        meanVal = np.mean(data[~np.isnan(data[:,j]),j]) #不是nan的平均值\n",
    "        \n",
    "        data[np.isnan(data[:,j]),j] = meanVal\n",
    "    return data\n",
    "\n",
    "data = replaceNanWithMean()\n",
    "print data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 59.25405798  24.12381887   9.15001359   2.30057852   1.45919235\n   0.51881753   0.32265809   0.31467665   0.26307953   0.23130666\n   0.21753458   0.207282     0.16908377   0.12559066   0.1203534\n   0.1140921    0.11111541   0.09245815   0.09050319   0.0861447 ]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEKCAYAAAAfGVI8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XucXHV9//HXezebZDf33YTczG5A00ASJNFFUZQiFxNR\nS0otqFWh9Vd68f5r0SDaYm9isV6q/bWipaK1VkUuKUUiREBFBBK5JAFi5BIgdxJygWySze7n98c5\nGyabmd0Tkpkzu/N+Ph7zmHPOnO85nzk7O5/5nnO+368iAjMzq111eQdgZmb5ciIwM6txTgRmZjXO\nicDMrMY5EZiZ1TgnAjOzGudEYGZW45wIzMxqnBOBmVmNG5J3AFmMHz8+pk+fnncYZmYDyvLly5+N\niAn9rTcgEsH06dNZtmxZ3mGYmQ0oktZmWc+nhszMapwTgZlZjStrIpA0VtK1kh6V9Iik10lqlnSr\npDXp87hyxmBmZn0rd43gy8AtEXE8cBLwCLAIWBoRM4Cl6byZmeWkbIlA0hjgNODfASJiX0RsB84F\nrklXuwZYWK4YzMysf+W8a+hYYAvwH5JOApYDHwEmRsSGdJ2NwMRy7PyG+9dx5ZLVrN/ewZSxjVwy\nfyYL500tx67MzAa0cp4aGgK8CvjXiJgHvECv00CRDI9WdIg0SRdLWiZp2ZYtWw5rxzfcv45Lr1vB\nuu0dBLBueweXXreCG+5f95LeiJnZYFbORPAM8ExE3JPOX0uSGDZJmgyQPm8uVjgiroqI9ohonzCh\n3/YQB7lyyWo6OrsOWtbR2cWVS1Yf5lswMxv8ypYIImIj8LSkmemiM4GHgcXAhemyC4Ebj/a+12/v\nOKzlZma1rNwtiz8EfEfSUOBx4A9Jks/3Jb0fWAucf7R3OmVsI+uKfOlPGdt4tHdlZjbglTURRMQD\nQHuRl84s534vmT+TS69bcdDpocaGei6ZP7OPUmZmtWlA9DV0uHruDvqHmx9h8669jGtq4K/fPtt3\nDZmZFTFou5hYOG8qP//EGdQJ3vu66U4CZmYlDNpEADB0SB2TxzTy1NYX8g7FzKxqDepEANDW0sTa\nbbvzDsPMrGrVRCJ4aqsTgZlZKYM+EbQ2j2DrC/t4fu/+vEMxM6tKgz4RtLU0AbDW1wnMzIoa9Img\ntTlJBD49ZGZW3KBPBAdqBL5gbGZW1KBPBKOGN9A8YihrXSMwMytq0CcCSE4PPbXN1wjMzIqpiUTQ\n1tLkGoGZWQm1kQiam1i/vYN9+7vzDsXMrOrURCKY1txEd1C0a2ozs1pXE4mgrWUE4LYEZmbF1Egi\nSG4hfdq3kJqZHaImEsExo4YxvKHOF4zNzIqoiUQgidZm90JqZlZMTSQCSDqfczcTZmaHqplE0NbS\nxFPbdhMReYdiZlZVaioRdHR2sWXX3rxDMTOrKjWTCHp6IfV1AjOzg9VMInixLYETgZlZoZpJBFPH\nNlInPJC9mVkvNZMIhg6pY8rYRp8aMjPrZUg5Ny7pSWAX0AXsj4h2Sc3A94DpwJPA+RHxXDnj6OFe\nSM3MDlWJGsGbImJuRLSn84uApRExA1iazldEa/MInnKNwMzsIHmcGjoXuCadvgZYWKkdt7U0se2F\nfeza01mpXZqZVb1yJ4IAbpO0XNLF6bKJEbEhnd4ITCxWUNLFkpZJWrZly5ajEkxbzy2kPj1kZnZA\nuRPBGyJiLvAW4AOSTit8MZJmvkWb+kbEVRHRHhHtEyZMOCrBtKa9kPr0kJnZi8qaCCJiXfq8Gbge\neA2wSdJkgPR5czljKNTqGoGZ2SHKlggkjZA0qmcaeDOwElgMXJiudiFwY7li6G3U8AaaRwz1QPZm\nZgXKefvoROB6ST37+a+IuEXSfcD3Jb0fWAucX8YYDtHa7FtIzcwKlS0RRMTjwElFlm8FzizXfvvT\n1tLE8rUVabZgZjYg1EzL4h5tzU2s397Bvv3deYdiZlYVai4RtLaMoDtg3faOvEMxM6sKNZcIegay\nX+vO58zMgFpMBM1uS2BmVqjmEsGEUcNobKj3nUNmZqlMiUBSo6SZ5Q6mEiT5FlIzswL9JgJJbwce\nAG5J5+dKWlzuwMqptaXJjcrMzFJZagSXk3QNsR0gIh4Aji1jTGXX1tzEU9t2k3R1ZGZW27Ikgs6I\n2NFr2YD+Bm1raWJPZzebd+3NOxQzs9xlSQSrJL0bqJc0Q9JXgF+UOa6yavVA9mZmB2RJBB8CZgN7\ngf8CdgAfLWdQ5fbiuAS+TmBm1m9fQxGxG7gsfQwKU8c1Ul8ntyUwMyPbXUO3ShpbMD9O0pLyhlVe\nDfV1TBk73KeGzMzIdmpofERs75mJiOeAY8oXUmW0NY9grWsEZmaZEkG3pNaeGUltDPC7hgCmNTfx\nlK8RmJllGo/gMuDnku4EBLwRuLjvItWvraWJ53Z3snNPJ6OHN+QdjplZbrJcLL5F0quAU9JFH42I\nZ8sbVvkd6Hxu627mTB2TczRmZvnJ2uncMGAbsBOYJem08oVUGa0t7oXUzAwy1AgkfQ64AFgF9Azr\nFcBPyxhX2bW5UZmZGZDtGsFCYGZEDKr+GEYOG0LLiKHufM7Mal6WU0OPA4Pyampri7ujNjPLUiPY\nDTwgaSlJNxMARMSHyxZVhbQ1N3Hfk8/lHYaZWa6yJILF6WPQaW0ZweIH17NvfzdDh9TcYG1mZkC2\n20evqUQgeWhrbqI74JnndnPchJF5h2NmlossfQ3NkHStpIclPd7zyLoDSfWS7pd0UzrfnPZftCZ9\nHnckb+BItKW3kLqrCTOrZVnOh/wH8K/AfuBNwLeA/zyMfXwEeKRgfhGwNCJmAEvT+VwcaEvgC8Zm\nVsOyJILGiFgKKCLWRsTlwFuzbFzSy9J1v1Gw+Fyg53TTNSS3p+ZiwshhNA2t951DZlbTslws3iup\nDlgj6YPAOiDrCfUvAR8HRhUsmxgRG9LpjcDErMEebZJobfZA9mZW27LUCD4CNAEfBl4NvBe4sL9C\nkt4GbI6I5aXWiWT0+KI9mUq6WNIyScu2bNmSIcyXprXZbQnMrLZluWvovnTyeeAPD2PbpwK/I+kc\nYDgwWtJ/ApskTY6IDZImA5tL7Pcq4CqA9vb2snV73dbSxJ2/3kJ3d1BXp3LtxsysapWsEUj6Uvr8\nP5IW9370t+GIuDQiXhYR04F3Aj+JiPeQtEnoqVFcCNx4xO/iCLS2jGDv/m427xpUPWiYmWXWV43g\n2+nz54/yPq8Avi/p/cBa4PyjvP3D0lowkP2kMcPzDMXMLBclE0FELJdUD1wcEX9wJDuJiDuAO9Lp\nrcCZR7K9o6lnXIK123bz2uNaco7GzKzy+rxYHBFdQJukoRWKp+Kmjmukvk5uS2BmNSvL7aOPA3el\n1wUO3GcZEV8oW1QV1FBfx5Sxw9262MxqVpZE8Fj6qOPg9gCDRlvzCI9UZmY1K8vto5+pRCB5am1p\n4kcrNvS/opnZIJRlqMoJJK2DZ5O0BwAgIs4oY1wV1dbcxHO7O9m5p5PRwwflGDxmZiVlaVn8HeBR\n4FjgM8CTwH19FRho2tz5nJnVsCyJoCUi/h3ojIg7I+KPgEFTGwBobfZA9mZWu7JcLO5MnzdIeiuw\nHmguX0iV13pgXAJ3PmdmtSdLIvg7SWOAvwC+AowGPlbWqCps5LAhjB851KeGzKwmlUwEkk6OiPsi\n4qZ00Q6SgWkGJfdCama1qq9rBFelw0n+raRZFYsoJ20tbktgZrWpZCKIiHnA20iGqLxW0oOSFkma\nXqHYKqq1uYn1OzrYu78r71DMzCqqv76GVkfEZyJiFvA+YAywVNJdFYmugtpamoiAZ57ryDsUM7OK\nynL7KOlQlceQDCs5ghKDyQxkbktgZrWqz7uGJL0ReBfJAPMrgP8GPhYROyoQW0W92JbAt5CaWW3p\n666hp0kGjvlv4PKIGHS1gELjRw6laWi9eyE1s5rTV43gDRGxtmKR5EwSrc1NPjVkZjWnr7uGaiYJ\n9GhtbnKNwMxqTqaLxbWiraWJp7btprs78g7FzKxiSiYCSZ9Ln3+/cuHkq7VlBPv2d7Np1568QzEz\nq5i+agTnSBJwaaWCyduBgex9ncDMakhfieAW4DnglZJ2StpV+Fyh+CrqQFsCXycwsxrS18XiSyJi\nLPC/ETE6IkYVPlcwxoqZMraR+jr5ziEzqylZxiw+V9JE4OR00T0RsaW8YeWjob6OqWMbfeeQmdWU\nfu8aSi8W3wv8PnA+cK+kd2QoN1zSvWlndaskfSZd3izp1rRn01sljTvSN3E0tbU08ZRbF5tZDcly\n++ingJMj4sKIeB/wGuDTGcrtBc6IiJOAucACSacAi4ClETEDWJrOVw23JTCzWpMlEdT16l5ia5Zy\nkXg+nW1IHwGcC1yTLr+GpB+jqtHW0sT23Z3s6Ojsf2Uzs0EgSyK4RdISSRdJugj4X+DmLBuXVC/p\nAZLeSm+NiHuAiRGxIV1lI0mPplWjp/M5XzA2s1qR5Zf9JcDXgFemj6si4hNZNh4RXRExF3gZ8BpJ\nc3q9HiS1hENIuljSMknLtmyp3LXpNg9kb2Y1Jsvg9UTEdcB1L3UnEbFd0u3AAmCTpMkRsUHSZEqM\nbRARVwFXAbS3t1esz4dWNyozsxpTtr6GJE2QNDadbgTOBh4FFgMXpqtdCNxYrhheihHDhjB+5DCf\nGjKzmpGpRvASTQaukVRPknC+HxE3Sbob+L6k95OMd3B+GWN4SdpamnxqyMxqRqZEkP6ib42I1Vk3\nHBEPAfOKLN8KnJk5why0NTfxy8e35h2GmVlFZGlQ9nbgAZK+h5A0V9LicgeWp2nNTWzYuYe9+7vy\nDsXMrOyyXCO4nKQR2XaAiHgAOLaMMeWuraWJCHh6W0feoZiZlV2WRNBZZLD6QT1yy4u9kPo6gZkN\nflmuEayS9G6gXtIM4MPAL8obVr56GpX5FlIzqwVZagQfAmaT9B30XWAn8NFyBpW38SOH0jS03onA\nzGpClm6odwOXpY+aIInW5iYPUGNmNaHfRCDpfzj0msAOYBnwtYgYlAP8trU08dgWXyMws8Evy6mh\nx4Hnga+nj53ALuC30vlBqa1lBE9t201396C+Lm5mluli8esj4uSC+f+RdF9EnCxpVbkCy1trcxP7\n9nezadceJo9pzDscM7OyyVIjGCmptWcmnR6Zzu4rS1RV4EAvpL5gbGaDXJYawV8AP5f0GCCSxmR/\nLmkELw4wM+i0FYxLcMpxLTlHY2ZWPlnuGro5bT9wfLpodcEF4i+VLbKcTRk7nCF1cudzZjboZe2G\negYwEzgJOF/S+8oXUnW46aENBPAvtz/GqVf8hBvuX5d3SGZmZZHl9tG/Bk4HZpEMUfkW4OfAt8oa\nWY5uuH8dl163gq70jqF12zu49LoVACycNzXP0MzMjrosNYJ3kHQbvTEi/pCkVjCmrFHl7Molq+no\nPLjn0Y7OLq5ckrkXbjOzASNLIuiIiG5gv6TRJENLTitvWPlav714r6OllpuZDWRZEsGydMjJrwPL\ngV8Bd5c1qpxNGVu83UCp5WZmA1m/iSAi/jwitkfEv5GMO3xheopo0Lpk/kwaG+oPWtbYUMcl82fm\nFJGZWflkGaFsac90RDwZEQ8VLhuMFs6bymfPO5GpBTWAP/ntl/tCsZkNSiXvGpI0HGgCxksaR9KY\nDGA0MOi/ERfOm8rCeVPZ0dFJ+9/dSsc+D1tpZoNTXzWCPyG5JnB8+tzzuBH4avlDqw5jGht4/cvH\nc8uqjUS4AzozG3xKJoKI+HJEHAv8ZUQcFxHHpo+TIqJmEgHAgjmTWLt1N49u3JV3KGZmR12WLia+\nIun1wPTC9SNi0DYo6+2sEybySa3glpUbOWHy6LzDMTM7qrJcLP428HngDcDJ6aO9zHFVlQmjhnFy\nWzNLVm3MOxQzs6MuS++j7cCsqPET5PPnTOJvb3qYJ559gWPHj8g7HDOzoyZLg7KVwKTD3bCkaZJu\nl/SwpFWSPpIub5Z0q6Q16fO4w912HubPngjgWoGZDTpZEsF44GFJSyQt7nlkKLcf+IuImAWcAnxA\n0ixgEbA0ImYAS9P5qveycU2cOHUMt6x0IjCzwSXLqaHLX8qGI2IDsCGd3iXpEZL2B+eS9GYKycA2\ndwCfeCn7qLQFcyZx5ZLVbNjR4eErzWzQyNLFxJ3Ak0BDOn0fSX9DmUmaDswD7gEmpkkCYCMwsUSZ\niyUtk7Rsy5Yth7O7spk/OzlD9uNVm3KOxMzs6Mly19AfA9cCX0sXTQVuyLoDSSOBHwIfjYidha+l\nF6CLXoSOiKsioj0i2idMmJB1d2X1imNG8opjRvr0kJkNKlmuEXwAOBXYCRARa4BjsmxcUgNJEvhO\nRFyXLt4kaXL6+mSSbq0HjAWzJ3HPE1vZ9sK+vEMxMzsqsiSCvRFx4FtP0hBK/IovJEnAvwOPRMQX\nCl5aDFyYTl9I0mXFgLFgziS6A2572KeHzGxwyJII7pT0SaBR0tnAD4D/yVDuVOC9wBmSHkgf5wBX\nAGdLWgOclc4PGLOnjGbq2EZu8W2kZjZIZLlraBHwfmAFSUd0NwPf6K9QRPycF3ss7e3MrAFWG0ks\nmDOJb9+9ll17Ohk1vCHvkMzMjkiWGkEjcHVE/H5EvAO4Ol1WsxbMmcS+rm5uX10ddzOZmR2JLIlg\nKQd/8TcCt5UnnIHhVa3jGD9yGEt895CZDQJZEsHwiHi+ZyadbipfSNWvvk68efZEbl+9mT2dHrDG\nzAa2LIngBUmv6pmR9Gqgo3whDQwLZk9i974ufrbm2bxDMTM7IlkuFn8E+IGk9SQXfycBF5Q1qgHg\nlONaGD18CLes3MjZs4o2jjYzGxD6TASS6oChJMNVzkwXr46IznIHVu2GDqnjrBMmctsjm+js6qah\nPkvlysys+vT57RUR3cC/RERnRKxMHzWfBHrMnzOJHR2d3PP4trxDMTN7yTLdNSTp99KWwlbgtBkT\naGyo55ZVG/pf2cysSmVJBH9C0pp4n6SdknZJ2tlfoVrQOLSe02dOYMmqTXR31/QAbmY2gGXphnpU\nRNRFRENEjE7nPYJ7asGcSWzZtZf7n34u71DMzF6SLN1QS9J7JH06nZ8m6TXlD21geNPxx9BQL3dN\nbWYDVpZTQ/8PeB3w7nT+eeBfyhbRADN6eAOnvmI8t6zaSDK8gpnZwJIlEbw2Ij4A7AGIiOdIbim1\n1ILZk3h6WwcPb/ClEzMbeLIkgk5J9aRjEEiaAHSXNaoB5qxZE6kT7nvIzAakLIngn4HrgWMk/T3w\nc+AfyhrVADN+5DBOnt7sMQrMbEDKctfQd4CPA58FNgALI+IH5Q5soFkwZxK/3vQ8j295vv+Vzcyq\nSMlEIGm4pI9K+irw28DXIuKrEfFI5cIbOObPngTAklUewtLMBpa+agTXAO0kI5O9Bfh8RSIaoKaM\nbeSkl43x6SEzG3D6SgSzIuI9EfE14B3AaRWKacCaP2cSDz69nfXba76XbjMbQPpKBAc6l4uI/RWI\nZcBbkJ4e+rFrBWY2gPSVCE5K+xbaKWkX8Er3NdS34yaM5LcmjvTpITMbUEomgoioT/sW6ulfaIj7\nGurfgtmTuPeJbWx9fm/eoZiZZeLRVI6y+XMm0R1w2yO+e8jMBgYngqNs1uTRTGtudCd0ZjZglC0R\nSLpa0mZJKwuWNUu6VdKa9HlcufafF0ksmD2Ju36zlZ17PJibmVW/ctYIvgks6LVsEbA0ImYAS9P5\nQWfBnEns6+rm9kc35x2KmVm/ypYIIuKnQO/BfM8laahG+rywXPvP07xp45gwahhLfPeQmQ0Alb5G\nMDEiegb43QhMrPD+K6KuTsyfPZHbH93Cns6uvMMxM+tTbheLIxnFpeRILpIulrRM0rItW7ZUMLKj\nY9SwBjo6uzj+07dw6hU/4Yb71+UdkplZUZVOBJskTQZIn0ueRI+IqyKiPSLaJ0yYULEAj4Yb7l/H\nf/ziiQPz67Z3cOl1K5wMzKwqVToRLAYuTKcvBG6s8P4r4solq9nTefDYPR2dXVy5ZHVOEZmZlVbO\n20e/C9wNzJT0jKT3A1cAZ0taA5yVzg86pTqdc2d0ZlaNhpRrwxHxrhIvnVmufVaLKWMbWVfkS3/K\n2MYcojEz65tbFpfBJfNn0thQf8jy957SmkM0ZmZ9cyIog4XzpvLZ805k6thGBEwaPZwRQ+tZ/OAG\n9u3v7re8mVklle3UUK1bOG8qC+dNPTD/41Ubufjby/nibb/mEwuOzzEyM7ODuUZQIW+ePYl3njyN\nf7vzMe59oneDazOz/DgRVNCn3zaL1uYmPva9B9whnZlVDSeCChoxbAhfOH8uG3Z0cPniVXmHY2YG\nOBFU3KvbxvHBN72C6361jptXbOi/gJlZmTkR5OBDZ87gpJeN4ZPXr2DTzj15h2NmNc6JIAcN9XV8\n8YK57O3s5i9/8CDd3SX73jMzKzsngpwcN2Ekl731BH625lmuufvJvMMxsxrmRJCjP3htK2ccfwxX\n/OhR1mzalXc4ZlajnAhyJIkrfu9ERgwbwkf++wG3OjazXDgR5OyYUcO54rwTeXjDTr5426/zDsfM\napATQRV48+xJXNDuVsdmlg8ngirxV293q2Mzy4cTQZVwq2Mzy4sTQRVxq2Mzy4MTQZVxq2MzqzQn\ngirTUF/HFy6Yy/N7OjntH2/n2EX/y6lX/IQb7l+Xd2hmNkh5YJoqtOKZHUhib9quYN32Di69bgXA\nQYPdmJkdDU4EVejKJavp7Dq4/6GOzi4WXfcQT259gZkTRzFz0ijaWkZQX6ei27jh/nVcuWQ167d3\nMGVsI5fMn+kkYmZFORFUofXbO4ou39PZzZeXriHSHDG8oY4ZxyRJ4fhJyfPMSaO4a82zfPL6lXR0\ndgGuUZhZ35wIqtCUsY2sK5IMpo5t5Nb/exprNj3P6o27WL1pF6s37uKO1Vu4dvkzB9arE/Tu0LSj\ns4srl6x2IjCzQzgRVKFL5s/k0utWHPhFD9DYUM8l82fSNHQIJ00by0nTxh5UZuvze1m9cRePbtzF\n39z0cNHtrtvewaIfPsTsqWM4ceoYjp80iuEN9UXX9akls9qhiOrvC7+9vT2WLVuWdxgVdSRfxKde\n8ZOiNYphQ+poHFrP9t1Jy+X6OjHjmJHMnjKGE6eOZs7UMZwweTS3PrypaCL67HknZo7hSBNJrZc3\nOxokLY+I9n7XyyMRSFoAfBmoB74REVf0tX4tJoIjccP960p+kZ87dwrrtnewct0OVq7bycr1O1i5\nbgfPPr8PAAnqJfYXGSznmFHDuPGDp9LYUE/j0HqG1tchHXqxuq/9Z/kyrPXyPdsYyIms1stXSwxV\nmwgk1QO/Bs4GngHuA94VEcXPZ+BE8FIczocoIti8ay8rntnByvU7+NJtazLto07QNHQIwxvqaRpa\nT2NDPcOH1vPIhp1Fu9RuGlrPOSdOpjB19OQRpUslWPzgenbv6zqk/Ihh9bzz5FbqBHV1ol6ivk5I\nPdPJ8n+74zF27tl/SPkxjQ18fMFM6iTqlOxTgjod/Hz54lU8t/vQ/p6aRwzls+ediOBAAlQac+H7\n+MsfPMjWF/YdUr5lxFC+/M55vd43B00IcddvtnDVz5446BgOG1LHn53+ct4085iD4q2r48X3I1En\nsfSRTVy5ZPWB248Bhg+p41NvO4G3njglKV+XJPyebdXX6cB2bnxg/YBOpHmXr5YYoLoTweuAyyNi\nfjp/KUBEfLZUGSeCyip1amlcUwOfWHA8u/d10dHZRUf6vHtfF3s6u9i9bz8dnd389NdbSm57ypjh\nB6Z7Pnk9H8FIl2zaubdk+ZHDhtDVHXRF0N0ddEcccmHcymfYkDp6VwLFwQv2dHZR7E8ikj61eqYP\neqFgctee/cXLK0nmxbZbaEdHZ9HPRJ2gecSwJHGn2+v5MVCY3Dfu3ENXkQ3U14lp4xqLxHVorfip\nbbuLbmNInWhtaeozfoC1W3cXrZVPHdvIXYvOKFKiuKyJII+LxVOBpwvmnwFe23slSRcDFwO0trZW\nJjIDSl+s/uu3z870a6RUIsn6IT7c8pEmg640Mbzp83ewYceh3XNMGj2cGz94KhGkCSSI4OB54F1X\n/ZLNuw5NRhNGDeM/Ljq5YL9J8noxkSWxXPyt5Wx5/tDy40cO5V/f8+oX108notf23v31e0oem6sv\naqe7mwMJsOe998TfHcHHvvdgyfKXv31Wr/WT41Z4DL+8tHSN8KLXTz9ovvdXVUTw9Z89UbRsABec\nPI3C355RsIWe5d/8xZPFywece9KUPvcP8K271xYt3x1w9qyJyV7j4L9f8OL8db8q3oq/qzsOuUmj\n1O/oJ559oejy/d3BrMmj+4yfgMe2FC9f6tbyI1W1dw1FxFXAVZDUCHIOp6b0fNm/1POTfd31VI7y\nyakhDjSu+8SC44uWX/SW45k4enjRbRT65DknFC1/2TknMGfqmH7LX/bW4uU/9dZZnDy9ud/yU/u4\nffiM4yf2W/7zS35dsvxFpx7bb/lrlz9Tsvyl55zQb/mbV2wsWf7Tb5vVb/lbH95Usvxnzp3Tb/ml\nj2wuWf6z553Yb/l7Ht9WsnzPqb3+LF/7XMltfPXdr+q3/AMlfgxNGXtojeRoyKOvoXXAtIL5l6XL\nrIosnDeVuxadwRNXvJW7Fp1xWOclF86bymfPO5GpYxsRL/4DZt1GrZe/ZP5MGnvd1nu4idTl8ytf\nLTEcjjyuEQwhuVh8JkkCuA94d0SU7ITf1wis1uR9x4nL+66hspN0DvAlkttHr46Iv+9rfScCM7PD\nV80Xi4mIm4Gb89i3mZkdzOMRmJnVOCcCM7Ma50RgZlbjnAjMzGrcgOh9VNIWoHhzwfyNB57NO4g+\nOL4j4/iOjOM7ckcSY1tETOhvpQGRCKqZpGVZbs/Ki+M7Mo7vyDi+I1eJGH1qyMysxjkRmJnVOCeC\nI3dV3gH0w/EdGcd3ZBzfkSt7jL5GYGZW41wjMDOrcU4EGUiaJul2SQ9LWiXpI0XWOV3SDkkPpI+/\nqnCMT0pake77kB76lPhnSb+R9JCk/jtFP3qxzSw4Lg9I2inpo73Wqejxk3S1pM2SVhYsa5Z0q6Q1\n6fO4EmUKmwFpAAAI+0lEQVQXSFqdHstFFYzvSkmPpn+/6yWNLVG2z89CGeO7XNK6gr/hOSXK5nX8\nvlcQ25OSHihRthLHr+h3Sm6fwYjwo58HMBl4VTo9iqQb7Vm91jkduCnHGJ8Exvfx+jnAj0hGxjsF\nuCenOOuBjST3N+d2/IDTgFcBKwuW/SOwKJ1eBHyuRPyPAccBQ4EHe38Wyhjfm4Eh6fTnisWX5bNQ\nxvguB/4yw98/l+PX6/V/Av4qx+NX9Dslr8+gawQZRMSGiPhVOr0LeIRkyM2B5FzgW5H4JTBW0uQc\n4jgTeCwicm0gGBE/Bbb1WnwucE06fQ2wsEjR1wC/iYjHI2If8N9pubLHFxE/joj96ewvSQZ1ykWJ\n45dFbsevh5JBhs8Hvnu095tVH98puXwGnQgOk6TpwDyg2MCyr0+r7T+SNLuigSXDn94maXk63nNv\nxcaKziOZvZPS/4B5Hj+AiRGxIZ3eCBQbF7JajuMfkdTwiunvs1BOH0r/hleXOK1RDcfvjcCmiCg1\nOHNFj1+v75RcPoNOBIdB0kjgh8BHI2Jnr5d/BbRGxCuBrwA3VDi8N0TEXOAtwAcknVbh/fdL0lDg\nd4AfFHk57+N3kEjq4FV5S52ky4D9wHdKrJLXZ+FfSU5XzAU2kJx+qUbvou/aQMWOX1/fKZX8DDoR\nZCSpgeQP9p2IuK736xGxMyKeT6dvBhokja9UfBGxLn3eDFxPUn0sVA1jRb8F+FVEbOr9Qt7HL7Wp\n53RZ+ry5yDq5HkdJFwFvA/4g/aI4RIbPQllExKaI6IqIbuDrJfab9/EbApwHfK/UOpU6fiW+U3L5\nDDoRZJCeU/x34JGI+EKJdSal6yHpNSTHdmuF4hshaVTPNMlFxZW9VlsMvC+9e+gUYEdBFbRSSv4S\ny/P4FVgMXJhOXwjcWGSd+4AZko5NazjvTMuVnaQFwMeB34mI3SXWyfJZKFd8hdecfrfEfnM7fqmz\ngEcj4pliL1bq+PXxnZLPZ7CcV8YHywN4A0kV7SHggfRxDvCnwJ+m63wQWEVyBf+XwOsrGN9x6X4f\nTGO4LF1eGJ+AfyG522AF0F7hYziC5It9TMGy3I4fSULaAHSSnGN9P9ACLAXWALcBzem6U4CbC8qe\nQ3KXx2M9x7pC8f2G5Nxwz2fw33rHV+qzUKH4vp1+th4i+WKaXE3HL13+zZ7PXMG6eRy/Ut8puXwG\n3bLYzKzG+dSQmVmNcyIwM6txTgRmZjXOicDMrMY5EZiZ1TgnAuuTpK60F8aVkn4gqanEejeX6g2z\nn+1PkXTtEcT3ZLGGZ5JGSvqapMfSrgLukPTal7qfaiBpbh89ep4uKSS9vWDZTZJOP0r7LnqcbXBw\nIrD+dETE3IiYA+wjuff/gLSBWl1EnBMR2w934xGxPiLecbSCLfANkk7HZkTEq4E/BAb6F9lckvvH\nS3kGuKxCsWSWtua1KuZEYIfjZ8ArJE1P+0L/Fkmry2k9vxjT1x6R9PW0n/UfS2oEkPQKSbdJelDS\nryS9PF1/Zfr6RZJuTH+9r5H01z07lnRD+st+VX8dgUl6OfBa4FORdHdARDwREf+bvv5/0xrOSqXj\nIqRxPCrpm5J+Lek7ks6SdFcay2vS9S6X9G1Jd6fL/zhdLiXjBaxU0pf9Beny09P3c226/e8UtKB+\ntaQ70/e1RC92LXCHpM9JujeN5Y1pC9K/AS5Ia2gXFHnrDwI7JJ1d5Jgc+EUvqV3SHQXv5xpJP5O0\nVtJ5kv4xfQ+3KOkGocfH0+X3SnpFWn6CpB9Kui99nNrrON1F0tDMqlk5Ws35MXgewPPp8xCS5u5/\nBkwHuoFTCtZ7kuQX93SSDtHmpsu/D7wnnb4H+N10ejjQlK6/Ml12EUlr0BagkSTJtKev9bSw7Fne\nUrjfXjH/DnB9iffzapLWryOAkSStR+cVxH0iyQ+k5cDVJC2yzwVuSMtfTvKF25i+36dJWn3+HnAr\nSV/xE4GnSPqcPx3YQdIfTB1wN0mr0gbgF8CEdLsXAFen03cA/5ROnwPcVnB8vlrifZ0O3ETSD/+d\n6bKbgNN7HyegHbij4P38PI3nJGA38Jb0teuBhQXle1qsv4907Ajgv0g6aQNoJekyoWe7y4HGvD/D\nfvT/cJXN+tOoF0dy+hlJ/yhTgLWRjGtQzBMR0VNmOTBdSf8tUyPieoCI2AOQ/jgudGtEbE1fu47k\nS3MZ8GFJv5uuMw2YwUvri+gNJEnihYJ9vJGkS4QnImJFunwVsDQiQtIKkkTR48aI6AA6JN1O0inZ\nG4DvRkQXScdhdwInAzuBeyPt2yY9ltOB7cAc4Nb0GNSTJMEePZ2QLe+17z5FxE8lIekNWcsAP4qI\nzvR91gO3pMt7v+/vFjx/MZ0+C5hV8HccraRHTYDF6XGyKudEYP3piKRL3gPSf/oX+iizt2C6i+TX\nc1a9+zwJJRc8zwJeFxG709Maw/vYxirgJEn16RdzVoVxdxfMd3Pw/8ohMR7GdrvSbQlYFRGv66dM\nz/qH4++BT5HUcHrs58VTwb2P3V6AiOiW1BkRPe+nr/fdM11HUjPcU7jBDJ8RqyK+RmAVEckoTM9I\nWgggaZiK34F0tpJxWxtJRme6CxgDPJcmgeNJhtrsa1+PkdQiPlNwPn66pLeS1GoWSmpS0rvk76bL\nDse5koZLaiE5JXNfuo0LJNVLmkByiubePraxGpgg6XVpfA3qfzCeXSTDGvYpIn4MjANeWbD4SZLT\nYpCcxnopLih4vjud/jHwoZ4VJM3tXciqnxOBVdJ7SU7xPERyfnxSkXXuJemj/SHghxGxjORUxRBJ\njwBXkPRO2p//Q3Ku/jdKLkZ/E9gcyfCA30z3cw/wjYi4/zDfx0PA7WkcfxsR60nOpz9Ecv3gJ8DH\nI2JjqQ1EMsTgO4DPSXqQpPfJ1/ez39tJTsOUulhc6O85uM/6zwBfVjIY++HUkgqNS/92HwE+li77\nMNCuZFSyh+l1V5kNDO591KqGkkFX2iPig3nHUoqky0kuoH8+71jMjhbXCMzMapxrBGZmNc41AjOz\nGudEYGZW45wIzMxqnBOBmVmNcyIwM6txTgRmZjXu/wP/nOjvtTmGCgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x5f0c2b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#根据特征值分析哪些主成分可以包含主要的信息（一般包含90%信息量即可）\n",
    "#可以看到只需要前面的6个主成分，方差百分比和，就达到96.8%\n",
    "data_mean = np.mean(data,axis=0)\n",
    "data_removeMean = data - data_mean\n",
    "data_cov = np.cov(data_removeMean,rowvar=0)\n",
    "eigVal,eigVect = np.linalg.eig(data_cov)\n",
    "eigVal_sortIndex = np.argsort(eigVal)\n",
    "eigVal_sortIndex = eigVal_sortIndex[::-1] #倒序过来\n",
    "sort_eigval = eigVal[eigVal_sortIndex]  #从大到小排序\n",
    "totalval = np.sum(sort_eigval)\n",
    "var_rate = sort_eigval / totalval *100\n",
    "\n",
    "print var_rate[:20].ravel()\n",
    "\n",
    "plt.plot(np.arange(1,21,1),var_rate[0:20],\"-o\")\n",
    "plt.xlabel(\"Principal Component Number\")\n",
    "plt.ylabel(\"Percentage of Variance\")\n",
    "plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
